R 和 Python 的語法在做資料分析時,有許多相似,但又有些微的不同的地方。所以今天的筆記我將整理一些常常重複使用到的指令,希望對大家也有幫助~
有兩種輸入指令方式:
library()
require()
不確定當前 R 的工作檔案路徑時,可以執行getwd()
查看、確認路徑。
#不直接寫出路徑,file.choose()會彈出視窗挑選檔案
read.table(file.choose(), header = TRUE) # 讀取txt檔
read.csv(file.choose(), header = TRUE) # 讀取csv檔
#寫出路徑的讀檔方式
read.csv("C:/Users/User/Desktop/output.csv", header = TRUE) # header = TRUE保留第一列(變數名稱)
library(foreign)
read.dta(...) # dta檔,,為Stata的資料
read.spss(..., to.data.frame=TRUE) # sav檔,為SPSS的資料
read.xport(...) # xport檔,為SAS的資料(需在SAS轉為transport資料 再用 R 讀取)
output.csv
csv檔。#2種不同路徑寫法
write.csv(output_data,"C:/Users/User/Desktop/output.csv")
write.csv(output_data,"C:\\Users\\User\\Desktop\\output.csv")
#row.names 不顯示Index
write.csv(output_data,"C:/Users/User/Desktop/output.csv",row.names = FALSE)
⇒ R 語言裡編寫路徑時斜線有2種不同的寫法,包括/
和\\
。
pdf("my_plot.pdf")
pdf("my_plot.pdf", # File name
width = 8, height = 7, # Width and height in inches
bg = "white", # Background color
colormodel = "cmyk" # Color model (cmyk)
paper = "A4") # Paper size
#Plot作圖
plot(rnorm(50))
#Close device
dev.off()
#不同device
png("my_plot.png")
jpeg("my_plot.jpeg", quality = 75)
bmp("my_plot")
#Plot作圖
plot(rnorm(50))
#Close device
dev.off()
#seq()
seq(1:10) # sequence序列
#list()
list(2, 4, 6) # 串列
#matrix
M <- matrix (data = c(1, 2, 3, 4), nrow = 2, ncol = 2) # R matrix內的元素排列 by column.
M_byrow <- matrix (data = c(1, 2, 3, 4), nrow = 2, ncol = 2, byrow=T)) # R matrix內的元素排列 by row. (byrow=True)
#data.frame
data.frame(
col_a=c(a1,a2,a3),
col_b=c(b1,b2,b3),
col_c=c(c1,c2,c3)
)
#輸出1到10
for (i in 1:10){
print(i)
}
#輸出1到10中,大於5的數字
for (i in 1:10){
if(i>5){
print(i)
}
}
#自訂名為 fun_print_num 的函數,輸出數字1到n中,大於5的數字。
fun_print_num<-function(n){
for (i in 1:n){
if(i>5){
print(i)
}
}
}
fun_print_num(10) #輸出數字1到 n=10中,大於5的數字。
常見數學運算 | R | Python |
---|---|---|
加減乘除 | + - * / |
+ - * / |
餘數 | %% |
% |
四捨五入 | round(num,digits=小數位數) |
round(num,小數位數) |
平方根 | sqrt() |
np.sqrt() |
絕對值 | asb() |
asb() |
次方 | ^ ** |
** |
exp() | exp() |
np.exp() |
執行動作 | R | Python |
---|---|---|
判斷條件 | if(){}else if(){}else{} |
if : elif : else : |
重複執行 | while(){} |
while : (break continue) else: |
重複迭代 | for(i in 1:n){} |
for in : for in range(len(df)): |
自訂函式 | function_name<-function(input){} |
def function_name(): return |
長度 | length |
len |
物件類型 | class() |
type() |
尋找物件位置 | match()``````which(物件==) |
物件.index() |
排序 | sort``````order(df,decreasing=F) |
.sort() sorted() |
# 從套件(Package)裡導入模組(Module),然後命名為 mdl。
from Package import Module as mdl
mdl.function() # 執行mdl模組裡的function()
我們可以用Pandas 套件讀取不同類型的資料檔,並轉成DataFrame:
import pandas as pd
pd.read_excel(r'C:\Users\user\Desktop\....xlsx')# excel檔
pd.read_csv(r'C:\Users\user\Desktop\....csv') # csv檔
pd.read_table(r'C:\Users\user\Desktop\....txt') # txt檔
pd.read_stata(...) # dta檔,,為Stata的資料
pd.read_sas(...) # xport檔,為SAS的資料
data.to_csv(r'C:\Users\user\Desktop\....csv') # csv檔
自己建立DataFrame:
pd.DataFrame({
'col_a':['a1','a2','a3'],
'col_b':range(3),
'col_c':[0,1,2]
})
套件 | 用處 |
---|---|
math | 數學函式(階乘、三角函數、角座標...) |
Numpy | 資料結構運算(陣列)、計算線性方程、抽取特定分布樣本 |
SciPy | 數學、統計函式 |
SciKit-learn | 統計(預測)、機器學習(建模、分群、分類...) |
statsmoddels | 統計(推斷) |
Pandas | 數據科學、資料分析(Dataframe) |
R CODER
https://r-coder.com/save-plot-r/
蔡佳泓(2014). 基礎統計分析:R程式在社會科學之應用. 雙葉書廊.
Wes McKinney (2015)."Python for data analysis". 2nd Edition. O'Reilly.
path 最保險還是用 normalizePath 配合 raw string
比如
normalizePath(r"(C:\User\R)")